// 基础类型
// 语法： 声明变量: 类型 = 值

// 1. 布尔
let bool: boolean = true
// 2. 数字
let num: number = 1
let num1: number = 2
let num3: number = 3
// 3. 字符串
let str: string = '123'
// 4. 数组
let arr: number[] = [1, 2, 3, 4, 5]
let arr1: string[] = ['1', '2', '3', '4']
let arr2: boolean[] = [true, false]
// 5. 元组 Tuple(本质上也是数组， 只是长度固定为2)
let t1: [boolean, number] = [true, 123]
let t2: [number, Function] = [1, () => { }]

// 举例
// const [value, setValue] = useState(1)

// 5. 枚举
enum Color {
	Red,
	Green,
	Yellow
}

// console.log(Color.Red)
// console.log(Color.Green)
// console.log(Color.Yellow)
// console.log(Color[0])
// console.log(Color[1])
// console.log(Color[2])

// 6. any 任意类型  检查器会跳过类型检查
let a: any = 123
a = true
a = [1, 2, 34]
a = {}
a = '123'
a = new Date()


// 7. void 当函数没有返回值的返回值类型
function sayName() { }

// 8. Null 和 Undefined
// 8-1 值和类型是一样的
const n: null = null
const u: undefined = undefined
// 8-2 默认情况下null和undefined是所有类型的子类型(可以将null和undefined复制给其他类型)	
// 	配置tsconfig.json 参数 strictNullChecks = false
const result: number = undefined

// 9. Never never类型表示的是那些永不存在的值的类型
function fn(): never {
	while (true) { }
}

// 10. unknown 未知类型 

// 11. object 